module pipectl(
  input i_de1_valid,
  input i_de2_valid,
  input i_ex1_valid,
  input i_ex2_valid,
  input i_ex3_valid,
  input i_ex4_valid,
  input i_wb_valid,
  input i_ex1_fb,
  input i_ex3_fb,
  input i_ex4_fb,
  output o_icache_rd,
  output o_de1_we,
  output o_de2_we,
  output o_ex1_we,
  output o_ex2_we,
  output o_ex3_we,
  output o_ex4_we,
  output o_wb_we
);

assign o_icache_rd =
  ~i_de1_valid &
  ~i_de2_valid &
  ~i_ex1_valid &
  ~i_ex2_valid &
  ~i_ex3_valid &
  ~i_ex4_valid &
  ~i_wb_valid;
assign o_wb_we = 1'b1;
assign o_ex4_we = o_wb_we;
assign o_ex3_we = o_ex4_we & ~i_ex4_fb;
assign o_ex2_we = o_ex3_we & ~i_ex3_fb;
assign o_ex1_we = o_ex2_we;
assign o_de2_we = o_ex1_we & ~i_ex1_fb;
assign o_de1_we = o_de2_we;

endmodule
